package com.game.majiang.algorithm.wuziqi;

import com.game.majiang.config.LogManager;

import lombok.extern.log4j.Log4j;


@Log4j
public class wuziqiguize {




	/**
	 * 这一步是否赢棋
	 * */
	public boolean ying(int x,int y,int qizi,int[][] qipan){
		int lianzi=0;//同色棋子数

		lianzi=wangshang(x, y,qizi,qipan)+wangxia( x, y,qizi,qipan)-1;
		if(lianzi>=5){
			LogManager.getInstance().Log("竖");
			return true;
		}

		lianzi=wangzuo(x, y,qizi,qipan)+wangyou( x, y,qizi,qipan)-1;
		if(lianzi>=5){
			LogManager.getInstance().Log("横");
			return true;
		}
		
		lianzi=wangzuoshang(x, y,qizi,qipan)+wangyouxia( x, y,qizi,qipan)-1;
		if(lianzi>=5){
			LogManager.getInstance().Log("左上右下");
			return true;
		}
		
		
		lianzi=wangzuoxia(x, y,qizi,qipan)+wangyoushang( x, y,qizi,qipan)-1;
		if(lianzi>=5){
			LogManager.getInstance().Log("右上左下");
			return true;
		}
		return false;

	}
	
	/**
	 * 往右上找相同棋子
	 * */
	private int wangyoushang(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x>-1&&y<15) {
			
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x--;
			y++;
		}

		return lianzi;
	}

	/**
	 * 往左下找相同棋子
	 * */
	private int wangzuoxia(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x<15&&y>-1) {
			
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x++;
			y--;
		}

		return lianzi;
	}


	/**
	 * 往右下找相同棋子
	 * */
	private int wangyouxia(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x<15&&y<15) {
		
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x++;
			y++;
		}

		return lianzi;
	}
	/**
	 * 往左上找相同棋子
	 * */
	private int wangzuoshang(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x>-1&&y>-1) {
			
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x--;
			y--;
		}

		return lianzi;
	}
	/**
	 * 往右找相同棋子
	 * */
	private int wangyou(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (y<15) {
			
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			y++;
		}

		return lianzi;
	}
	/**
	 * 往左找相同棋子
	 * */
	private int wangzuo(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (y>-1) {
		
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			y--;
		}

		return lianzi;
	}
	/**
	 * 往下找相同棋子
	 * */
	private int wangxia(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x<15) {
		
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x++;
		}

		return lianzi;
	}
	/**
	 * 往上找相同棋子
	 * */
	private int wangshang(int x, int y, int qizi, int[][] qipan) {
		int lianzi=0;//同色棋子数

		while (x>-1) {
		
			if(qipan[x][y]!=qizi){
				break;
			}else if (qipan[x][y]==qizi){
				lianzi++;
			}
			x--;
		}

		return lianzi;
	}




}
